package com.share.common.rabbit.constant;

/**
 * RabbitMQ消息队列常量类
 * 统一管理系统中使用的交换机、路由键和队列名称
 * 按业务模块分类，便于维护和查阅
 */
public class MqConst {

    // ===================================== 测试相关消息队列 =====================================
    /**
     * 测试用交换机名称
     */
    public static final String EXCHANGE_TEST = "share.test";

    /**
     * 测试用路由键
     */
    public static final String ROUTING_TEST = "share.test";

    /**
     * 消息确认测试用路由键
     */
    public static final String ROUTING_CONFIRM = "share.confirm";

    /**
     * 测试用队列名称
     */
    public static final String QUEUE_TEST = "share.test";

    /**
     * 消息确认测试用队列名称
     */
    public static final String QUEUE_CONFIRM = "share.confirm";


    // ===================================== 订单相关消息队列 =====================================
    /**
     * 订单业务交换机名称
     */
    public static final String EXCHANGE_ORDER = "share.order";

    /**
     * 提交订单路由键
     * 用于发送订单提交事件的消息
     */
    public static final String ROUTING_SUBMIT_ORDER = "share.submit.order";

    /**
     * 结束订单路由键
     * 用于发送订单完成/结束事件的消息
     */
    public static final String ROUTING_END_ORDER = "share.end.order";

    /**
     * 提交订单队列名称
     * 接收订单提交事件的消息队列
     */
    public static final String QUEUE_SUBMIT_ORDER = "share.submit.order";

    /**
     * 结束订单队列名称
     * 接收订单完成/结束事件的消息队列
     */
    public static final String QUEUE_END_ORDER = "share.end.order";


    // ===================================== 支付相关消息队列 =====================================
    /**
     * 支付业务交换机名称
     */
    public static final String EXCHANGE_PAYMENT_PAY = "share.payment";

    /**
     * 支付操作路由键
     * 用于发送支付相关事件的消息
     */
    public static final String ROUTING_PAYMENT_PAY = "share.payment.pay";

    /**
     * 支付操作队列名称
     * 接收支付相关事件的消息队列
     */
    public static final String QUEUE_PAYMENT_PAY = "share.payment.pay";


    // ===================================== 设备相关消息队列 =====================================
    /**
     * 设备业务交换机名称
     */
    public static final String EXCHANGE_DEVICE = "share.device";

    /**
     * 解锁卡槽路由键
     * 用于发送卡槽解锁指令的消息
     */
    public static final String ROUTING_UNLOCK_SLOT = "share.unlock.slot";

    /**
     * 解锁卡槽队列名称
     * 接收卡槽解锁指令的消息队列
     */
    public static final String QUEUE_UNLOCK_SLOT = "share.unlock.slot";

    /**
     * 取消解锁卡槽的延迟时间（单位：秒）
     * 此处设置为5秒，用于处理解锁超时的场景
     */
    public static final Integer CANCEL_UNLOCK_SLOT_DELAY_TIME = 1 * 5;
}